Computing devices, personal computers, workstations, and servers (hereinafter “computer” or “computers”) typically include a basic input and output system (BIOS) as an interface between computer hardware (e.g., a processor, chipsets, memory, etc.) and an operating system (OS). The BIOS includes firmware and/or software code to initialize and enable low-level hardware services of the computer, such as basic keyboard, video, disk drive, input/output (I/O) port(s), and chipset drivers (e.g., memory controllers) associated with a computer motherboard.
Real mode is a central processing unit (CPU) operating mode that BIOS developers and manufacturers rely upon when initializing a computer. The real mode of CPU operation uses a segment register and an offset register, which are combined to form a linear address. Despite most CPUs having registers larger than 16-bits, such CPUs must begin early execution procedures in real mode based on, in part, backwards compatibility requirements and reliance upon legacy 16-bit real mode assembly language having only a very small region of code space for execution. Accordingly, third parties, such as computer platform manufacturers and operating system manufacturers, for example, accommodate such limitations by developing real mode assembly code for disk, video, and keyboard interrupts (Interrupts 13h, 10h, and 16h, respectively). These boot limitations, which include limited memory storage, retard feature enhancement for modern-day computer platforms.
More recent non-legacy CPUs, such as 64-bit processors, include a greater amount of initialization complexity and features. However, processors in real mode allow no more than 1 MB of addressable memory. Such complexity and features are significantly hindered by the inability to take advantage of the CPU's full register width, thus severely limiting execution code space. Accordingly, a relatively large amount of handcrafted assembly language must be developed to employ real mode addressing schemes regardless of the CPU's true register width. Furthermore, real mode does not allow memory protection and may permit direct software access to BIOS routines and peripheral hardware.
Coping with real mode limitations is not limited to BIOS manufacturers. For example, effort must be applied by CPU manufacturers, chipset manufacturers, and computer platform original equipment manufacturers (OEMs) to understand CPU specific initialization details, and write corresponding drivers to support initialization processes during a typical BIOS hand-off from real mode to a protected mode, long mode, or other mode. Accordingly, the CPU manufacturers must invest significant amounts of time and resources developing public architecture documents, interface documents, whitepapers, and other instructional materials so that third party consumers and developers can write software to accommodate the hand-off between real mode and long mode. For example, OEMs typically write 16-bit real mode code that is to be executed at the reset vector. Today, all of the hardware initialization, both for the CPU and the chipset, needs to be described to the original design manufacturer (ODM) and OEM in significant detail so that such OEMs can create their own version(s) of startup BIOS/firmware code. In the event that the CPU manufacturer makes changes to its product design, or develops a new product line, additional low-level operational disclosures (e.g., user-manuals, system documents, whitepapers, etc.) must be provided from the CPU manufacturer to the various vendors that use the CPU so that such vendors may develop compatible device driver code.